﻿#ifndef FFMPEG_COMMAND_DEMO_H
#define FFMPEG_COMMAND_DEMO_H

#include <QWidget>
#include <QProcess>

namespace Ui {
class ffmpeg_command_demo;
}

class QListWidgetItem;
class FFmpegCommandDemo : public QWidget
{
    Q_OBJECT

public:
    explicit FFmpegCommandDemo(QWidget *parent = nullptr);
    ~FFmpegCommandDemo();

private slots:
    // 生成缩略图
    void on_thumbnailsBtn_clicked();
    //
    void on_addFileBtn_clicked();

    // 转换完成
    void onConvertFinished(int exitCode, QProcess::ExitStatus exitStatus);

    void on_addFileToMergeBtn_clicked();

    void fileListItemDoubleClicked(QListWidgetItem* item);
    void fileListToCutItemDoubleClicked(QListWidgetItem* item);

    // 合并视频
    void on_mergeVideoBtn_clicked();
    // 转换进度更新
    void onUpdateMergeProgress(double progress);

    // 添加文件到视频转Gif列表
    void on_addVideoToGifBtn_clicked();
    // 转Gif
    void on_makeGifBtn_clicked();

    // 添加文件到裁剪列表
    void on_addFileToCutBtn_clicked();
    // 裁剪视频
    void on_cutVideoBtn_clicked();

    void on_addDirtoConvertBtn_clicked();

    void on_addFileToConvertBtn_clicked();

    void on_pushButton_clicked();

    void on_convertVideoBtn_clicked();

private:
    Ui::ffmpeg_command_demo *ui;

private:
    QString m_videoToGifPath;   // 转Gif的源文件路径
    QString m_videoToGifConvertedFilePath; // 转Gif的目标文件路径

    QString m_convertedFilePath; // 转换后的目标文件路径

    QString m_dirToConvert; // 待批量转换视频的路径
    QString m_convertedVideoPath = "D:/VideoConverter/ConvertedVideo"; // 视频转换的保存路径

    bool m_bMerging = false; // 正在合并中
};

#endif // FFMPEG_COMMAND_DEMO_H
